package com.maiko.maikoaiagent.rag;

import org.springframework.ai.chat.prompt.PromptTemplate;
import org.springframework.ai.rag.generation.augmentation.ContextualQueryAugmenter;

/**
 * LoveApp 上下文查询增强器工厂类
 *
 * 该类用于创建一个 ContextualQueryAugmenter 实例，用于对查询进行上下文增强，
 * 并且针对空上下文时提供自定义提示，限制回答范围为恋爱相关问题。
 *
 * 功能说明：
 * - 配置是否允许空上下文查询（这里设置为不允许）
 * - 当上下文为空时，输出预定义的提示文本，告知用户仅能回答恋爱相关内容
 * - 方便在对话或检索增强中控制回答范围和用户体验
 *
 * 适用场景：
 * 用于恋爱应用中的 RAG（检索增强生成）流程，限制生成模型只回答恋爱相关的问题，
 * 并提供客服链接作为额外帮助。
 *
 * @author Maiko7
 * @create 2025-07-09 10:55
 */
public class LoveAppContextualQueryAugmenterFactory {

    /**
     * 创建并返回一个配置好的 ContextualQueryAugmenter 实例
     *
     * @return 配置完成的 ContextualQueryAugmenter，用于上下文增强和空上下文提示
     */
    public static ContextualQueryAugmenter createInstance() {
        // 定义空上下文时的提示模板，提示用户仅能回答恋爱相关问题，并提供客服链接
        PromptTemplate emptyContextPromptTemplate = new PromptTemplate("""
                你应该输出下面的内容：
                抱歉，我只能回答恋爱相关的问题，别的没办法帮到您哦，
                有问题可以联系编程导航客服 https://github.com/Maiko7
                """);

        // 构建 ContextualQueryAugmenter 实例
        return ContextualQueryAugmenter.builder()
                .allowEmptyContext(false)               // 不允许空上下文查询
                .emptyContextPromptTemplate(emptyContextPromptTemplate)  // 空上下文时的提示模板
                .build();
    }
}


